/**
 * ***************************************************************************** Copyright (c) 2000,
 * 2006 IBM Corporation and others. All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0 which accompanies this
 * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
 *
 * <p>Contributors: IBM Corporation - initial API and implementation
 * *****************************************************************************
 */
package org.eclipse.ui.dialogs;

/**
 * Implementors of this interface answer one of the prescribed return codes when asked whether to
 * overwrite a certain path string (which could represent a resource path, a file system path, etc).
 */
public interface IOverwriteQuery {
  /** Return code indicating the operation should be canceled. */
  public static final String CANCEL = "CANCEL"; // $NON-NLS-1$

  /**
   * Return code indicating the entity should not be overwritten, but operation should not be
   * canceled.
   */
  public static final String NO = "NO"; // $NON-NLS-1$

  /** Return code indicating the entity should be overwritten. */
  public static final String YES = "YES"; // $NON-NLS-1$

  /**
   * Return code indicating the entity should be overwritten, and all subsequent entities should be
   * overwritten without prompting.
   */
  public static final String ALL = "ALL"; // $NON-NLS-1$

  /**
   * Return code indicating the entity should not be overwritten, and all subsequent entities should
   * not be overwritten without prompting.
   */
  public static final String NO_ALL = "NOALL"; // $NON-NLS-1$

  /**
   * Returns one of the return code constants declared on this interface, indicating whether the
   * entity represented by the passed String should be overwritten.
   *
   * <p>This method may be called from a non-UI thread, in which case this method must run the query
   * in a sync exec in the UI thread, if it needs to query the user.
   *
   * @param pathString the path representing the entity to be overwritten
   * @return one of the return code constants declared on this interface
   */
  String queryOverwrite(String pathString);
}
